home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / A+ Disk Magazine Volume 1, No. 1 (1984)(Ziff-Davis).zip / A+ Disk Magazine Volume 1, No. 1 (1984)(Ziff-Davis).do / PYRAMID.bas < prev    next >
BASIC Source File  |  1996-12-24  |  9KB  |  195 lines

  1. 1  HOME : VTAB 8: HTAB 12: PRINT "A+ DISK MAGAZINE"
  2. 2  VTAB 10: HTAB 16: PRINT "PRESENTS"
  3. 3  VTAB 12: HTAB 12: INVERSE : PRINT " PYRAMID MATCH ": NORMAL 
  4. 4  FOR I = 1 TO 500: NEXT I
  5. 5  VTAB 15: HTAB 12: PRINT "BY PAUL SOMERSON"
  6. 6  VTAB 17: HTAB 14: PRINT "PROGRAMMED BY"
  7. 7  VTAB 19: HTAB 10: PRINT "OPPENHEIMER SOFTWARE"
  8. 8  VTAB 23: HTAB 22: PRINT "(C)COPYRIGHT 1983"
  9. 9  FOR I = 1 TO 4000: NEXT I
  10. 10  REM   ** PYRAMID MATCH  **
  11. 20  REM     ** MODIFICATIONS BY   RON WIENER
  12. 50  HOME : DIM A$(20),AA$(20)
  13. 55  FOR I = 1 TO 40:B$ = B$ +" ": NEXT 
  14. 75 DH$ = "-": FOR I = 1 TO 40:DH$ = DH$ +"-": NEXT I
  15. 80 AS$ = "*": FOR I = 1 TO 39:AS$ = AS$ +"*": NEXT I
  16. 85  GOSUB 3600
  17. 90 A4$ = AS$
  18. 94  GOTO 250
  19. 95 PM$ = " < <  P Y R A M I D   M A T C H  > > "
  20. 100  VTAB 8: HTAB 1: PRINT A4$
  21. 110  VTAB 16: HTAB 1: PRINT A4$
  22. 120  FOR W = 9 TO 15
  23. 125  VTAB W: HTAB 1: PRINT "*": VTAB W: HTAB 40: PRINT "*": NEXT W
  24. 200  VTAB 14: HTAB 8: PRINT "(HIT ANY KEY TO CONTINUE)"
  25. 210  VTAB 11: HTAB 16: PRINT " PYRAMID "
  26. 215  FOR I = 1 TO 350: NEXT 
  27. 220  VTAB 11: HTAB 16: INVERSE : PRINT "  MATCH  ": NORMAL 
  28. 225  FOR I = 1 TO 350: NEXT 
  29. 230 X =  PEEK( -16384): POKE  -16368,0: IF X < = 127  THEN 210
  30. 250  HOME 
  31. 275  VTAB 1: HTAB 1: PRINT PM$
  32. 280  VTAB 10: HTAB 1: PRINT A4$: VTAB 17: HTAB 1: PRINT A4$
  33. 290  FOR FG = 11 TO 16: VTAB FG: HTAB 1: PRINT "*": VTAB FG: HTAB 40: PRINT "*": NEXT FG
  34. 410  VTAB 14: HTAB 2: PRINT  LEFT$(B$,38): VTAB 15: HTAB 2: PRINT  LEFT$(B$,38)
  35. 415  VTAB 13: HTAB 5: PRINT "HIT ";: INVERSE : PRINT "'I'";: NORMAL : PRINT " IF YOU WANT INSTRUCTIONS;"
  36. 420  VTAB 14: HTAB 9: PRINT "ANY OTHER KEY TO CONTINUE"
  37. 425  POKE  -16368,0: WAIT  -16384,128
  38. 430 X =  PEEK( -16384): POKE  -16368,0
  39. 440  IF X < >201  THEN 1000
  40. 500  REM  ** INSTRUCTIONS
  41. 510  HOME 
  42. 515  VTAB 3:C$ = "I'M GLAD YOU ASKED . . . ": GOSUB 3570
  43. 517  VTAB 6
  44. 520 C$ = "THE COMPUTER WILL PRINT LONGER": GOSUB 3570
  45. 525 C$ = "AND LONGER NUMBERS ON THE SCREEN ..": GOSUB 3570
  46. 530 C$ = "BUT JUST FOR AN INSTANT!!": GOSUB 3570
  47. 550 C$ = "YOUR JOB IS TO RE-ENTER THEM CORRECTLY": GOSUB 3570
  48. 560 C$ = "AND AS QUICKLY AS YOU POSSIBLY CAN,": GOSUB 3570
  49. 565 C$ = "IN AN EVER-INCREASING PYRAMID.": GOSUB 3570
  50. 575  VTAB 22:C$ = "HIT ANY KEY FOR THE REST !!": GOSUB 3570: VTAB 23: HTAB 39
  51. 580 A$ = "": GET A$: IF A$ = ""  THEN 580
  52. 585  HOME 
  53. 590  VTAB 6:C$ = "THERE ARE 17 LEVELS IN THE PYRAMID.": GOSUB 3570
  54. 600 C$ = "EACH LEVEL IS HARDER THAN THE ONE BEFORE": GOSUB 3570
  55. 602 C$ = "WHEN YOU ENTER NUMBERS DON'T WORRY": GOSUB 3570
  56. 604 C$ = "ABOUT HITTING THE RETURN KEY ": GOSUB 3570
  57. 605 C$ = "THE COMPUTER WILL DO THIS FOR YOU.": GOSUB 3570
  58. 615 C$ = "JUST ENTER THE NUMBERS THEMSELVES.": GOSUB 3570
  59. 620  VTAB 22:C$ = "HIT ANY KEY FOR THE REST !!": GOSUB 3570: VTAB 23: HTAB 39
  60. 630 A$ = "": GET A$: IF A$ = ""  THEN 630
  61. 650  HOME 
  62. 660  VTAB 6
  63. 670 C$ = "YOU CAN ALWAYS ASK THE COMPUTER": GOSUB 3570
  64. 680 C$ = "TO SHOW YOU THE NUMBER AGAIN, ": GOSUB 3570
  65. 685 C$ = "AS MANY TIMES AS YOU WANT, BY JUST ": GOSUB 3570
  66. 690 C$ = "HITTING THE ESC KEY.  THIS WILL ": GOSUB 3570
  67. 700 C$ = "CANCEL ANY DIGITS ALREADY ENTERED": GOSUB 3570
  68. 705 C$ = "FOR THAT LEVEL, AND YOU MAY START": GOSUB 3570
  69. 710 C$ = "THAT LEVEL OVER": GOSUB 3570
  70. 715 C$ = "BEWARE. . STARTING OVER LOSES POINTS!": GOSUB 3570
  71. 720  VTAB 22:C$ = "HIT ANY KEY FOR THE REST !!": GOSUB 3570: VTAB 23: HTAB 39
  72. 730 A$ = "": GET A$: IF A$ = ""  THEN 730
  73. 750  HOME 
  74. 775  HOME 
  75. 780  VTAB 6:C$ = " THERE ARE 9 DEGREES OF DIFFICULTY": GOSUB 3570
  76. 790 C$ = "THE HIGHER THE DEGREE THE LESS TIME": GOSUB 3570
  77. 800 C$ = "YOU HAVE OVERALL, AND THE LESS TIME": GOSUB 3570
  78. 805 C$ = "YOU WILL SEE EACH NUMBER": GOSUB 3570
  79. 810 C$ = "THE HIGHER THE LEVEL AND DEGREE": GOSUB 3570
  80. 820 C$ = "OF DIFFICULTY, THE MORE POINTS YOU GET!": GOSUB 3570
  81. 830  PRINT : PRINT 
  82. 850 C$ = "HIT ANY KEY TO BEGIN THE CHALLENGE": GOSUB 3570: VTAB 23: HTAB 20
  83. 880 A$ = "": GET A$: IF A$ = ""  THEN 880
  84. 1000  HOME 
  85. 1004 CT = 0
  86. 1005  VTAB 1: HTAB 1: PRINT PM$
  87. 1010  VTAB 3: HTAB 3: INVERSE : PRINT "PLEASE SELECT A LEVEL OF DIFFICULTY": NORMAL 
  88. 1012 X = 5
  89. 1015  FOR I = 1 TO 9: VTAB X: HTAB 7:X = X +2
  90. 1025  PRINT I;"..";LV$(I): IF I = 9  THEN  HTAB 10: PRINT "CIVILIZATION"
  91. 1035  NEXT I
  92. 1050  VTAB 24: HTAB 20
  93. 1055 A$ = "": GET A$: IF A$ = ""  THEN 1055
  94. 1060 A =  VAL(A$): IF A <1  OR A >9  THEN 1050
  95. 1065 X = 3 +(2 *A): VTAB X: HTAB 2: FLASH : PRINT " --> ";A;". ";LV$(A): IF A = 9  THEN  VTAB X +1: HTAB 10: PRINT "CIVILIZATION"
  96. 1070  NORMAL : FOR I = 1 TO 2000: NEXT I:NS = (10 -A) *10:DF = A
  97. 1090  HOME : VTAB 1: HTAB 1: PRINT PM$
  98. 1100  VTAB 7: HTAB 5: PRINT  LEFT$(AS$,30):L$ = LV$(A): IF A = 9  THEN L$ = "VISITOR"
  99. 1105  FOR I = 1 TO 8: HTAB 5: PRINT "*"; LEFT$(B$,28);"*": NEXT I: HTAB 5: PRINT  LEFT$(AS$,30)
  100. 1110  VTAB 9: HTAB 18: PRINT "OK,"
  101. 1112  VTAB 11:L =  LEN(L$):L =  INT((30 -L)/2): HTAB L +5: INVERSE : PRINT L$: NORMAL 
  102. 1115  VTAB 13: HTAB 7: PRINT "YOU HAVE EXACTLY ";: INVERSE : PRINT NS;" SECONDS": NORMAL 
  103. 1120  VTAB 15: HTAB 9: PRINT "TO COMPLETE THE PYRAMID"
  104. 1125  VTAB 20: HTAB 5: PRINT "HIT ANY KEY TO START THE GAME ";
  105. 1130 A$ = "": GET A$: IF A$ = ""  THEN 1130
  106. 1150  HOME : VTAB 1: HTAB 2: PRINT PM$
  107. 1170  VTAB 2: HTAB 1: PRINT  LEFT$(AS$,39);
  108. 1175  FOR I = 1 TO 21: VTAB 2 +I: HTAB 1: PRINT "*";: HTAB 39: PRINT "*";: NEXT I: HTAB 1: PRINT  LEFT$(AS$,39);
  109. 1180  VTAB 21: HTAB 10: PRINT  LEFT$(AS$,21)
  110. 1185  HTAB 10: PRINT "*"; LEFT$(B$,19);"*";
  111. 1200  GOSUB 5000
  112. 1205  PRINT  CHR$(7): PRINT  CHR$(7)
  113. 1207  VTAB 24: HTAB 1: PRINT  LEFT$(B$,38);: VTAB 22: HTAB 14: PRINT  LEFT$(B$,10)
  114. 1210  FOR Q = 1 TO 17
  115. 1211 T$ = "":TT$ = "":T1$ = "":T2$ = "":G$ = ""
  116. 1214  VTAB 5: HTAB 8: PRINT Q;
  117. 1215  FOR R = 1 TO  LEN(A$(Q))
  118. 1220 T$ =  MID$ (A$(Q),R,1) + CHR$(32)
  119. 1230 TT$ = TT$ +T$: NEXT R
  120. 1240 AA$(Q) = TT$
  121. 1250  VTAB Q +2:HL =  LEN(TT$):H =  INT((40 -HL)/2) +1: HTAB H: PRINT TT$
  122. 1255  FOR I = 1 TO (1500 +((DF -9) *100)): NEXT 
  123. 1257 CT = CT +700
  124. 1260  VTAB Q +2: HTAB H: PRINT  LEFT$(B$,HL)
  125. 1265  GOSUB 7000
  126. 1268  VTAB 22: HTAB 12: PRINT "TIME REMAINING:";
  127. 1269 NT = NS *1000
  128. 1270 CT = CT +58: VTAB 22: HTAB 27: PRINT  INT(NS -CT/1000);" ";: IF CT >NT  THEN 8990
  129. 1271  IF  PEEK( -16384) <128  THEN 1270
  130. 1272 X% =  PEEK( -16384) -128: POKE  -16368,0
  131. 1274  IF X% <0  THEN 1270
  132. 1275  IF X% = 27  THEN  GOSUB 5990: GOTO 1211
  133. 1276  IF X% <48  OR X% >57  THEN 1270
  134. 1277  FOR W = 1 TO 7:WW =  PEEK( -16336): NEXT 
  135. 1278  PRINT  CHR$(7)
  136. 1279 CT = CT +180
  137. 1280 A$ =  CHR$(X%):G$ = G$ +A$: IF  LEN(G$) = Q  THEN 1295
  138. 1290  GOTO 1270
  139. 1295 T1$ = "":T2$ = ""
  140. 1300  FOR R = 1 TO  LEN(A$(Q))
  141. 1305 T1$ =  MID$ (G$,R,1) + CHR$(32):T2$ = T2$ +T1$
  142. 1310  NEXT R
  143. 1315  VTAB Q +2: HTAB H: PRINT T2$
  144. 1320  IF G$ = A$(Q)  THEN  PRINT  CHR$(7): GOSUB 6020
  145. 1330  IF G$ < >A$(Q)  THEN  VTAB 22: HTAB 11: FOR I = 1 TO 5: PRINT  CHR$(7);: NEXT : PRINT " WRONG...YOU LOSE!";: GOTO 9000
  146. 1500 G$ = "": NEXT Q
  147. 1505 GAME = SC
  148. 1510  VTAB 22: HTAB 11: PRINT "  YOU DID IT!   ": FOR X = 1 TO 1500: NEXT : GOTO 1000
  149. 3570  PRINT :CL =  LEN(C$): IF CL > = 39  THEN  PRINT C$: RETURN 
  150. 3575 CL = (40 - LEN(C$))/2: PRINT  LEFT$(B$,CL) +C$
  151. 3580  RETURN 
  152. 3600  FOR I = 1 TO 9: READ LV$(I): NEXT I: RETURN 
  153. 3605  DATA  "DROOLING INFANT","LITTLE LEAGUER"
  154. 3610  DATA  "JUNIOR HIGH","ALMOST DRAFTED"
  155. 3615  DATA  "TAKING FRESHMAN MATH", "SUMMA CUM LAUDE"
  156. 3620  DATA  "WHIZ KID","COMPUTER GENIUS"
  157. 3630  DATA   "VISITOR FROM AN ADVANCED"
  158. 5000  REM  ** RANDOM NUMBER GENERATOR AND PARSER
  159. 5005 NT$ = ""
  160. 5010  FOR J = 1 TO 153
  161. 5015 N$ =  RIGHT$( STR$( INT( RND(1) *10)),1)
  162. 5020  IF J = 1  AND N$ = "0"  THEN 5015
  163. 5030 NT$ = NT$ +N$: VTAB 22: HTAB 19:J$ = "   " + STR$(154 -J): PRINT  RIGHT$(J$,3): NEXT 
  164. 5050 PK = 1
  165. 5060  FOR K = 1 TO 17: VTAB 24: HTAB 8: FLASH : PRINT "WATCH SCREEN CLOSELY PLEASE ";: NORMAL 
  166. 5065  IF  MID$ (NT$,PK,1) = "0"  THEN NT$ =  LEFT$(NT$,PK -1) +"1" + MID$ (NT$,PK +1)
  167. 5070 A$(K) =  MID$ (NT$,PK,K)
  168. 5080 PK = PK +K
  169. 5090  NEXT K
  170. 5100  FOR I = 1 TO 3: VTAB I +2: HTAB 14: PRINT "!";: HTAB 26: PRINT "!";: NEXT : VTAB 6: HTAB 13: PRINT "/";: HTAB 27: PRINT  CHR$(92);
  171. 5105  VTAB 7: HTAB 2: PRINT  LEFT$(DH$,11);: HTAB 28: PRINT  LEFT$(DH$,11);
  172. 5110  VTAB 3: HTAB 2: PRINT "HI GAME:";: PRINT GAME;
  173. 5115  IF GAME = 0  THEN  HTAB 10: VTAB 3: PRINT "---";
  174. 5120  VTAB 4: HTAB 2: PRINT "DIFFICULTY:";DF;
  175. 5130  VTAB 5: HTAB 2: PRINT "LEVEL:";
  176. 5140  VTAB 6: HTAB 2: PRINT "SCORE:";
  177. 5150  VTAB 3: HTAB 27: PRINT "ENTER NUMBER";
  178. 5160  VTAB 4: HTAB 27: PRINT "AFTER FLASH.";
  179. 5170  VTAB 5: HTAB 27: PRINT "<ESC> STARTS";
  180. 5180  VTAB 6: HTAB 29: PRINT "LEVEL OVER";
  181. 5200  RETURN 
  182. 5990 SC = SC -25
  183. 6000  VTAB 6: HTAB 8: PRINT SC;" ";: RETURN 
  184. 6020 SC = SC +100 +Q *10 +2 *(100 -NS): VTAB 6: HTAB 8: PRINT SC;" ": RETURN 
  185. 7000  IF CT/1000 >NS  THEN  VTAB 22: HTAB 12: PRINT "   OUT OF TIME!  ";: PRINT  CHR$(7);: GOTO 9000
  186. 7010  VTAB 22: HTAB 12: PRINT "TIME REMAINING:" INT(NS -(CT/1000));" ";: RETURN 
  187. 8000  HOME : END 
  188. 8990  VTAB 22: HTAB 12: PRINT "   OUT OF TIME! ";: PRINT  CHR$(7);
  189. 9000  FOR X = 1 TO 2200: NEXT X
  190. 9020  VTAB 22: HTAB 11: PRINT "  R=REPLAY Q=QUIT ";: GET A$
  191. 9040  IF A$ = "R"  THEN 9075
  192. 9050  IF A$ = "Q"  THEN 8000
  193. 9060  GOTO 9020
  194. 9075  IF SC >GAME  THEN GAME = SC
  195. 9080 SC = 0: GOTO 1000